// 基础路径 注意发布之前要先修改这里
const port = process.env.port || process.env.npm_config_port || 18089 // 端口
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
module.exports = {
  publicPath: process.env.NODE_ENV === 'production' ? '/' : '/',
  lintOnSave: process.env.NODE_ENV === 'development',
  outputDir: 'dist',
  // 用于放置生成的静态资源 (js、css、img、fonts) 的；（项目打包之后，静态资源会放在这个文件夹下）
  assetsDir: 'static',
  // 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  configureWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      return {
        plugins: [
          new BundleAnalyzerPlugin()
        ]
      }
    }
  },
  // configureWebpack: {
  //   externals: {
  //     "moment": "moment",
  //   }
  // },
  devServer: {
    port,
    proxy: {
      [process.env.VUE_APP_BASE_API]: {
        target: `${process.env.VUE_APP_SERVER_IP}`,
        // target: `http://192.168.111.41:8989`,
        // target: `http://47.99.186.255:8089`,
        // target: `http://localhost:8989`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      },
      '/ws': {
        // target: 'ws://localhost:9812', // 后端目标接口地址
        // target: `http://110.88.208.42:9812`,
        // target: `http://192.168.199.66:9812`,
        target: `http://localhost:9812`,
        changeOrigin: true, // 是否允许跨域
        pathRewrite: {
          '^/socket': '' // 重写,
        },
        ws: true // 开启ws, 如果是http代理此处可以不用设置
      }
    },
    disableHostCheck: true
  },
  chainWebpack: (config) => {
    // 忽略的打包文件
    config.externals({
      'vue': 'Vue',
      'vue-router': 'VueRouter',
      'vuex': 'Vuex',
      'axios': 'axios',
      'element-ui': 'ELEMENT'
    })
    const entry = config.entry('app')
    entry
      .add('babel-polyfill')
      .end()
    entry
      .add('classlist-polyfill')
      .end()
    entry
      .add('@/mock')
      .end()
    const svgRule = config.module.rule('svg')
    svgRule.uses.clear()
    svgRule
      .test(/\.svg$/)
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
  },
  css: {
    extract: { ignoreOrder: true }
  }
}
